/*
 * Copyright 2010 Nicolas Martignole.
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless
 *  required by applicable law or agreed to in writing, software distributed under
 *  the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
 *  OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions
 *  and limitations under the License.
 */

package org.letouilleur.celerio

/**
 * Custom Grails taglib, see http://grails.org/Dynamic%20Tag%20Libraries
 * @author Nicolas Martignole.
 */
class SecurityTagLib {
  def authenticateService

  static namespace = 'celerio'

  /**
   * This tag returns either a "login" hyperlink if the user is not authenticated, or a simple welcome message.
   */
  def authenticateBox = {attrs, body ->
   def user = authenticateService.userDomain()
    if(!user){
     out <<  link(controller:"login",action:"auth"){'Login'} 
    }else{
      out << "Welcome "<<user<<""
    }
  }

  def isUserInRoleAdmin = { attrs, body ->
    Account user = authenticateService.userDomain()
    if(user){
      // If the user belongs to the ROLE_ADMIN through the AccountRole relationship
      // For Florent : this is Groovy and not Grails.
      if(user.authorities*.authority.contains('ROLE_ADMIN')) {
        out << "<strong>Administrator</strong>&nbsp;" << body()                                                  
      }
    } else {
      out << "[You are not authenticated]"
    }
  }
}
